<?php
namespace App\Common\Lib\Utils\ArrayHelper;

use App\Common as com;
use App\Common\Lib\Utils\ArrayHelper\Trim as nameTrim;
use App\Common\Lib\Utils as nameUtils;

class Trim extends com\Lib\LibBase {

	/**
	 * @var mixed
	 */
	protected $data = null;

	/**
	 * 分隔符
	 * @var string [默认：',']
	 */
	private string $delimiter = ',';

	/**
	 * 是否删除字符串首尾(包含分隔符)
	 * @var bool [true][默认]清除 [false]不清除
	 */
	private bool $trimSides = true;

	/**
	 * 处理空字符串时，是否返回空数组
	 * @var bool [true]允许 [false][默认]不允许
	 */
	private bool $allowEmptyString = false;

	/**
	 * Trim constructor.
	 * @param int|string|array $data 要分隔的字符(支持字符串(1,2,3)、数组[1,2,3]、纯数字[1])
	 */
	public function __construct( $data ) {
		$this->data = $data;
		//
		parent::__construct();
	}

	/**
	 * 设置分隔符
	 * @param string $delimiter [默认：',']
	 * @return $this
	 */
	public function delimiter( string $delimiter = ',' ):self {
		$this->delimiter = $delimiter;
		//
		return $this;
	}

	/**
	 * 是否删除字符串首尾
	 * @param bool $trimSides [true][默认]
	 * @return $this
	 */
	public function trimSides( bool $trimSides = true ):self {
		$this->trimSides = $trimSides;
		//
		return $this;
	}

	/**
	 * 处理空字符串时，是否返回空数组
	 * @param bool $allowEmptyString [true][默认]是 [false]否
	 * @return $this
	 */
	public function allowEmptyString( bool $allowEmptyString = true ):self {
		$this->allowEmptyString = $allowEmptyString;
		//
		return $this;
	}

	/**
	 * @return nameUtils\ArrayHelper
	 */
	public function toArrayHelper(  ):nameUtils\ArrayHelper {
		return nameUtils\ArrayHelper::makeOfNew( com\Lib\Fun\Array_::toArray( $this->data, [
			'delimiter' => $this->delimiter,
			'trimSides' => $this->trimSides,
			'notEmpty' => ! $this->allowEmptyString,
		] ) );
	}

	// ===============================
	//
	//
	// 下面为静态方法
	//
	//
	// ===============================

	/**
	 * @param int|string|array $data 要分隔的字符(支持字符串(1,2,3)、数组[1,2,3]、纯数字[1])
	 * @return $this
	 */
	public static function new( $data ):self {
		return self::make( ...func_get_args() );
	}


}
